package com.ncui.wisdomLearn.biz.user.controller;

import com.ncui.wisdomLearn.api.dto.RoleDTO;
import com.ncui.wisdomLearn.api.vo.RoleVO;
import com.ncui.wisdomLearn.biz.user.service.RoleService;
import com.ncui.wisdomLearn.common.common.R;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 角色表 控制层
 *
 * @author lvlele
 * @since 2025-01-09 10:27:48
 */
@RestController
@RequiredArgsConstructor
@RequestMapping("/role")
public class RoleController {

    private final RoleService roleService;

    /**
     * 添加角色
     *
     * @param roleDTO 角色信息
     * @return 添加结果
     */
    @PostMapping
    public R<Boolean> addRole(@RequestBody RoleDTO roleDTO) {
        return R.ok(roleService.addRole(roleDTO));
    }

    /**
     * 更新角色
     *
     * @param roleDTO 角色信息
     * @return 更新结果
     */
    @PutMapping
    public R<Boolean> updateRole(@RequestBody RoleDTO roleDTO) {
        return R.ok(roleService.updateRole(roleDTO));
    }

    /**
     * 删除角色
     *
     * @param roleId 角色ID
     * @return 删除结果
     */
    @DeleteMapping("/{roleId}")
    public R<Boolean> deleteRole(@PathVariable Long roleId) {
        return R.ok(roleService.deleteRole(roleId));
    }


    /**
     * 获取角色详情
     *
     * @param roleId 角色ID
     * @return 角色信息
     */
    @GetMapping("/{roleId}")
    public R<RoleVO> getRoleById(@PathVariable Long roleId) {
        return R.ok(roleService.getRoleById(roleId));
    }

    /**
     * 批量获取角色信息
     *
     * @param ids 角色ID列表
     * @return 角色信息列表
     */
    @PostMapping("/batch")
    public R<List<RoleVO>> listRolesByIds(@RequestBody List<Long> ids) {
        return R.ok(roleService.listRolesByIds(ids));
    }

    /**
     * 获取所有角色列表
     *
     * @return 角色列表
     */
    @GetMapping("/list")
    public R<List<RoleVO>> listAllRoles() {
        return R.ok(roleService.listAllRoles());
    }
}

